Providing print preview of a print job using printing calls from a print driver

ABSTRACT

A print preview of a print job is performed. An operating system forwards to a printer driver, printing calls for the print job. The printer driver translates the printing calls to display calls for the print job. The printer driver forwards the display calls through the operating system to a display driver. The display driver displays a representation of the print job on a display.

BACKGROUND

The present invention concerns printing and display of drawings within acomputing system and pertains particularly to the preview of drawingsbefore printing.

While of general use in the printing and display field, the presentinvention is especially useful to the field of computer driven printersparticularly designed for producing engineering or other large drawingson paper, vellum, film or other print media which is drawn through themechanism from a roll or from a manual or automatic sheet feed mediapath. Typically, the media may have a width from 81/2 inches to as muchas 3 or 4 feet or more.

With reference to a rectangular coordinate system, the paper or otherprint media is drawn through the printer in the X direction and athermal inkjet printer carriage is mounted for movement transversely ofthe paper in what shall be referred to as the Y direction. A sheet ofpaper or other print media is either manually fed or paper is drawn froma supply roll thereof around a platen roller which may or may not bepower driven. When the printer apparatus employs a thermal inkjetprinting head or heads, precise control of the spacing between the printheads and the surface of the print media on which printing is to takeplace is essential otherwise acceptable print resolution is lost.

Inkjet printers, such as those sold by Hewlett Packard Company, offersubstantial improvements in speed over the conventional X-Y plotter.Inkjet printers typically include a pen having an array of nozzles. Thepens are mounted on a carriage which is moved across the page insuccessive swaths. Each inkjet pen has heater circuits which, whenactivated, cause ink to be ejected from associated nozzles. As the penis positioned over a given location, a jet of ink is ejected from thenozzle to provide a pixel of ink at a desired location. The mosaic ofpixels thus created provides a desired composite image.

Using printers for large print media introduces special problems inprinter software. For example, many operating systems, such as theMicrosoft Windows operating system, available from Microsoft Corporationhaving a business address of One Microsoft Way, Redmond, Wash. 98052,are currently limited as to the size of papers supported. Thislimitation has been inherited by applications as either a limited papersize support or as system crashes with big paper sizes.

One of the most used approaches to overcome size limitations of papersizes is to scale a drawing. The scaling is done by the printer driverinternally or in conjunction with a graphic-device interface (GDI)within the Windows operating system. Scaling is often presented as onescale factor or a source and destination paper size.

Traditional implementations of scaling in applications and driversachieve their results by multiplying or dividing the receivedcoordinates by a scale factor. Some scaling procedures accept onlyinteger scale factors to avoid rounding problems.

Another way to overcome the size limitations of paper sizes is to reporta bigger resolution than the device resolution. In that way theapplication and the GDI are forced to generate more pixels. However, bigscale factors resulting in higher resolutions increase the likelihoodthat an application will cause the operating system to crash. Inaddition, there is limit to the amount of pixels which can be handled bythe GDI.

Another problem which arises when using printers for large-sized printmedia, and sometimes even arises when using printers for normal-sizedprint media, is the lack of an adequate print preview. A print previewfeature is particularly important for large-sized media printers becausethe cost of print media and ink can be significant, and reprinting canbe costly both in the cost of print media and ink as well as in timespent printing.

Some applications, allow a print preview. However, very often theapplication print preview feature shows only a very inadequate previewof the drawing to be printed. For example, the application print previewmay only show a representation of physical paper and an area within thephysical paper on which the printing will take place. Alternatively, theapplication print preview may show a correct representation of thephysical paper without showing if the drawing is going to be clippedbecause it will be outside of the plotting area.

BRIEF SUMMARY OF THE INVENTION

In accordance with the preferred embodiment of the present invention, apreview of a print job is performed. An operating system forwardsprinting calls for a print job. The printer driver translates theprinting calls to display calls for the print job, and forwards them,through the operating system, to a display driver which displays arepresentation of the print job on a display, such as a monitor orscreen. The preferred embodiment of the present invention allows anysoftware application that runs under the operating system to preview anyprint job prior to actually printing it. The preferred embodiment of thepresent also provides a print preview to all those applications that donot have print preview as well as provides a higher accurate printpreview for those applications which have a print preview built in.

In the preferred embodiment, the preview generated by the printer driveris a simplified representation of the print job. For example, ingenerating the simplified representation, the printer driver ignores anycolor, pattern fill, pen width and styled pen for the print job. Also,when generating the simplified representation, the printer driver paintsjust the outline of polygons and rectangles. The printer driver paintsbitmaps and text as solid black rectangles which outline them.Additionally, when generating the simplified representation, the printerdriver paints polylines as lines, and the printer driver paints onlyfirst and last pixels of every segment in scan lines.

In the preferred embodiment, in response to a user making a selection byclicking on a "skip preview" button on a print progress window, theprint job is printed on a printer without any further print preview orother user interaction. Also, after displaying a page of the print jobon the display, the printer driver waits a predetermined amount of timefor user input, before printing the page of the print job. When thepredetermined amount of time expires before user input is received, theprinter driver prints the page of the print job. The print job may becanceled at any time by a user clicking on a cancel button on a printprogress window.

In the preferred embodiment, in order to print the print job on aprinter, the operating system re-sends the print calls to the printerdriver. In the preferred embodiment, the print calls are sent kept in aWindows meta-file by the operating system.

The present invention provides an efficient way to provide a printpreview by a printer driver.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a perspective view of a printer/plotter mechanism showing thecover partly broken away to reveal a platen roller, pinch rollers and aprint head carriage mounted on slider rods which extend parallel to theaxis of the platen roller.

FIG. 2 is right hand cross sectional elevation showing the ends of theplaten roller, pinch rollers and mechanism for moving the pinch rollersupport member into and out of an operative position for theprinter/plotter shown in FIG. 1.

FIG. 3 is a perspective view of the carriage assembly, the carriagepositioning mechanism, and the paper positioning mechanism of aprinter/plotter similar to the one shown in FIG. 1.

FIG. 4 is perspective view of a simplified representation of a mediapositioning system utilized in a printer/plotter similar to the oneshown in FIG. 1.

FIG. 5 shows a simplified block diagram of the organization of acomputing system which includes drivers for a printer and a display inaccordance with a preferred embodiment of the present invention.

FIG. 6, FIG. 7 and FIG. 8 show window displays for the computing systemshown in FIG. 5, the displays illustrate selection of paper sizes andscaling of output to be printed, in accordance with a preferredembodiment of the present invention.

FIG. 9 shows a window display for the computing system shown in FIG. 5,the display illustrates scaling and the selection of print preview andlayout options for output to be printed, in accordance with a preferredembodiment of the present invention.

FIG. 10 shows a window display for the computing system shown in FIG. 5,the display illustrates scaling and the selection of print preview andlayout options for output to be printed, in accordance with analternative preferred embodiment of the present invention.

FIG. 11, FIG. 12, FIG. 13, FIG. 14 and FIG. 15 show window displays forthe computing system shown in FIG. 5, the displays illustrate operationof a print preview feature of the computing system, in accordance with apreferred embodiment of the present invention.

FIG. 16 illustrates the distinctions between page size, margin, plottingarea and inked area.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

FIG. 1 is a perspective view of a printer/plotter mechanism having achassis 2 supported by a pair of spaced legs 4 and a housing whichincludes a generally arcuate cover 6 for containing a roll 7 of printmedium such as paper, vellum or film. As seen in the broken away sectionat the top of FIG. 1, a platen roller 10 extends transversely of theapparatus in the Y direction to provide a support and printing path atits upper surface for the medium upon which printing is to take place. Apair of slider rods support a transversely movable print head carriage30 having a thermal inkjet print head or a plurality of thermal inkjetprint heals mounted thereon which are positioned a precise distanceabove the platen roller 10. The top portions of four pinch rollers 20,two each being mounted on the tops of two different printer rollersupport members as is an actuating lever 40 for moving the print rollersupport members into and out of their operative position.

In FIG. 2, the paper or other print media path is shown by the dashedline. Also the pinch roller support member 25 has at least onerearwardly extending upper stabilizer shoulder 28 having an arcuatesurface 29 thereon which limits upward motion of the pinch rollersupport member 25 when it is retracted away from the platen roller 10 byabutment of the surface 29 with one of two printer carriage slider rods12 mounted on the chassis of the printer/plotter. A generallycylindrical support bearing is provided at the rearward end of thesupport arm 27 and is seen to have a bore 31 in the end thereof whichreceives one end of a compression spring 32.

A support bearing 35 is mounted on the printer/plotter chassis and has acircular/cylindrical interior surface which receives and supports thesupport arm 27. The inside diameter of the surface of bearing 35 is madeslightly larger than the outside diameter of the bearing surface on thesupport arm 27 to permit vertical movement of the arm 27 in the bearing35 within a selected angular tolerance. The distance from the capturedend 28 of the support arm 27 to the centerline of the platen roller 10is preferably about twice the distance from the centerline of the pinchrollers to the center of curvature of the arcuate media guide surface 21which also generally coincides with the centerline of the platen roller10. The compression spring 32 thus biases the pinch roller supportmember 25 and pinch rollers 20 toward the platen roller during printing.Thus, if the captured end 28 of the support arm is verticallydisplaceable in the bearing 35 within the selected angular tolerance,the pinchroller position will shift angularly around the platen roller10 only about one half the selected angular bearing tolerance becausethe assembly is constrained to rotate about the center of the platenroller 10.

When it is desired to load a sheet of printing medium into theprinter/plotter or printing medium either manually or from the roll 7thereof, the paper is fed until movement of the lead end thereof isterminated by abutment in the nap between the lower pinch rollers 20 andthe platen roller 10. The platen roller is then rotated in acounterclockwise direction to draw the paper between the platen roller10 and the arcuate guide surface of the roller support member 25 andsubsequently past the upper pinch rollers 20. Paper can be removed whendesired by retracting the pinch roller support member 25 and pinchrollers 20 away from the platen roller 10. For this purpose, the supportand actuation arm 27 has a substantially vertically extending shoulder33 thereon which may be engaged by a retainer arm 34 which is fixedlyattached to a transversely extending shaft 50 mounted in theprinter/plotter chassis. Rotation of the shaft 50 to retract the pinchroller support member 25 to its open non-pinching position isaccomplished by affixation of a bellcrank 60 to the shaft 50 so that theshaft may be rotated by movement of the bellcrank 60 which is in turnattached to a second bellcrank 62 by a connecting rod 64. The secondbellcrank 62 is connected to the pinch arm release handle 40 by anotherconnecting rod 66, the bellcranks and pinch arm release levers beingpivotally affixed to the printer/plotter chassis or rotatable rod 50 ina manner which will be apparent to persons skilled in the art. It willbe appreciated that a number of separate pinch roller support members 25may be mounted along the length of the platen roller 10 and that all maybe commonly moved to their operative position or retracted therefrom byproviding a number of retainer arms 34 on the rotatable shaft 50 whichis turned when desired by the pinch arm release lever linkage.

FIG. 3 is a perspective view of a carriage assembly 100, a carriagepositioning mechanism 110 and an encoder strip 120 for a printer similarto that shown in FIG. 1. The carriage positioning mechanism 110 includesa carriage position motor 112 which has a shaft 114 extending therefromthrough which the motor drives a small belt 116. Through the small belt116, the carriage position motor 112 drives an idler 122 via the shaft118 thereof. In turn, the idler 122 drives a belt 124 which is securedby a second idler 126. The belt 124 is attached to the carriage 100 andadapted to slide therethrough.

The position of the carriage assembly in the scan axis is determinedprecisely by the use of the code strip 120. The code strip 120 issecured by a first stanchion 128 on one end and a second stanchion 129on the other end. An optical reader (not shown) is disposed on thecarriage assembly and provides carriage position signals which areutilized by the invention to achieve optimal image registration.

The media and carriage position information is provided to a processoron a circuit board 170 disposed on the carriage assembly 100 for use inconnection with pen alignment techniques of the present invention. (Theterms pen and cartridge are used interchangeably herein as is common inthe art.) The printer has four inkjet pens, 102, 104, 106, and 108 thatstore ink of different colors, e.g., black, yellow, magenta and cyanink, respectively. As the carriage assembly 100 translates relative tothe medium along the x and y axes, selected nozzles in the thermalinkjet cartridge pens are activated and ink is applied to the medium.The colors from the three color inkjet pens are mixed to obtain anyother particular color.

FIG. 4 is perspective view of a simplified representation of a mediapositioning system 150 utilized in the inventive printer. The mediapositioning system 150 includes a motor 152 which is coaxial with amedia roller 154. The position of the media roller 154 is determined bya media position encoder 156. The media position encoder includes a disc158 having a plurality of apertures 159 therein. An optical reader 160provides a plurality of output pulses which facilitate the determinationof the roller 154 and, therefore, the position of the media 30 as well.

FIG. 5 shows a simplified block diagram of the organization of acomputing system 207. Computing system 207 runs various applicationprocesses, as illustrated in FIG. 5 by an application process 201. Whenapplication 201 desires to print information on a printer 205, ordisplay information on a monitor 206, application process makes calls tographic-device interface (GDI) 202. As described in the illustratedembodiment herein, GDI 202 is a part of a Microsoft Windows operatingsystem. See for example, Device Driver Adaptation Guide for theMicrosoft Windows Operating System, Version 3.1, available fromMicrosoft Corporation.

For information to be displayed on monitor 206, GDI 202 sendsdevice-independent graphics commands to a display driver 204. Displaydriver 204 translates the independent graphics commands from GDI 202into commands which action display 206 can use to display theinformation. Driver 204 also can transfer to GDI 202 and ontoapplication 201 information about color resolution, screen size andresolution, graphics capabilities and other advanced features that maybe available on display 206.

For information to be printed on a printer 205, GDI 202 sendsdevice-independent graphics commands to a printer driver 203. Printerdriver 203 translates the independent graphics commands from GDI 202into commands and action printer 205 can use to print the information.Printer driver 203 also can transfer to GDI 202 and onto application 201information about color resolution, resolution, graphics capabilitiesand other advanced features that may be available on printer 205.

In the preferred embodiment, printer driver 203 allows for scaling tofit large-sized paper printed out by printer 205. The scaling uses aninteger scale factor and a non-integer scale factor. The total scalefactor results from a concatenation of the two scaling steps: an integerscaling step and a non-integer scaling step. This allows a very good fitof a print-out onto the selected paper size. The invention is suitablefor use on any type of sheet or roll feed media including paper, coatedpaper, film, transparencies, etc.

Printer driver 203 has a front-end which scales all coordinates anddimensions, as further described below. This is used for the integerportion of the scaling. The non-integer portion of the scaling is doneby printer driver 203 reporting a virtual (or "fake") resolution to GDI202. The total scale factor (TSF) is therefore derived from the integerscale factor (ISF) and the non-integer scale factor (also called realscale factor (RSF)) using the formula set out in Table 1 below:

                  TABLE 1    ______________________________________    total scale factor = integer scale factor * non-integer scaling    TSF = ISF * RSF    ______________________________________

For example, when printer 205 has a real resolution of 300 dpi and thetotal scale factor is 254%, printer driver 203 will use 2 as the realscale factor and 1.27 as the non-integer scale factor. Thus printerdriver 203 will report a resolution of 381 dpi (300 dpi*1.27) to GDI202. This will result in a correct 254% scale factor for the printedoutput of printer 205.

In the preferred embodiment, the non-integer scale factor is typicallyin the range of 0.0 to 10.0 and the resolutions reported to GDI 202 byprinter driver 203 will be in the range of 300 dots per inch (dpi) to600 dpi, or in the range of 600 dpi to 1200 dpi, depending upon whetherthe actual resolution of printer 205 is 300 dpi or 600 dpi,respectively. For these resolutions, an maximum dimension (of 297millimeters) seen by application 201 will have 14031 pixels when theactual resolution of printer 205 is 600 dpi or 7015 pixels when theactual resolution of printer 205 is 300 dpi. Since this number issignificantly below the GDI limit of 32,768 pixels, there will be veryfew chances for the application 201 to overflow.

In order to avoid overflow problems with applications that support bigpaper sizes, printer driver 203 also allows using a non-integer factorbetween 0 and 1.0. This way application 201 will see a lower resolutionand thus internal coordinates will be smaller. This approach provides arobust solution but results in a degradation of the quality of theoutput of printer 205. In the preferred embodiment, printer driver 203chooses this option only when necessary.

FIG. 6 shows a paper sizes dialog box 210, originated by printer driver203 and displayed on display 206, when called up by a user. Using papersizes dialog box 210, a user can select a standard paper size from box211 or use a box 212 to set out a custom paper size. When using box 212,the user can specify a length of the print media, a height of the printmedia and indicate which units (English or metric) are being used.

FIG. 7 shows a scaling options dialog box 220, originated by printerdriver 203 and displayed on display 206, when called up by a user. Usingscaling options dialog box 220, a user can select a scaling method fromsettings box 221. The user may scale to a standard page size, scale to acustom paper size or scale with a designating scaling factor. In thepreferred embodiment, the standard page sizes are as shown in box 211.When electing to scale to a custom paper size, the user can specify alength of the print media, a height of the print media and indicatewhich units (English or metric) are being used. Alternately, the usercan chose a scale factor from 25% to 3600%.

In one embodiment, the screen display of FIG. 7 is eliminated and itsfunction is incorporated into the screen displays of FIG. 9 and FIG. 10.

Before accepting new scaling parameters, when the user has clicked onthe "OK" button at the bottom of scaling options dialog box 220, and ifthe user has selected "Fit to custom size" in box 221, printer driver203 will check the source paper size and the destination paper sizes. Ifthe scaling factors in the two dimensions are different more than 10%,printer driver 203 will warn the user by displaying warning dialog box230 shown in FIG. 8.

FIG. 8 shows warning dialog box 230 containing the following text: "TheScaling `From` and `To` paper sizes do not have the same proportions.Automatically adjust `From` proportions?"

Printer driver 203 performs scaling using a series of equations.Definitions for the variables used in the equations are set out in Table2 below:

                  TABLE 2    ______________________________________    Variable  Definition    ______________________________________    X Scale Factor              The ratio between the destination paper width and the    (XSF)     source paper width.    Y Scale Factor              The ratio between the destination paper height and the    (YSF)     source paper height.    Scale Factor (SF)              Vector notation for (XSF,YSF)    Total Scale Factor              The real number by which the drawing must be    (TSF)     isotropically scaled.    Integer Scale              The integer that is less than the TSF. This is used to    Factor (ISF)              achieve the integer scaling.    Real Scale Factor              The number by which ISF must be multiplied to get    (RSF)     TSF. RSF is used to compute the fake resolution              reported to GDI 202.    Physical paper              The dimensions of the paper utilized by printer 205.    size (PPS).              (mm)    Reported Physical              The dimensions of the paper reported by printer driver    paper size (PPS').              203 to GDI 202. (mm)    Imageable Area              The dimensions of the printing area for printer 205.    (IA).     (mm)    Reported  The dimensions of the printing area reported by printer    Imageable Area              driver 203 to GDI 202. (mm)    (IA').    Printing Offset              The margins, or offset, from the upper left corner of    (PO)      the PPS to the upper left corner of the IA for printer              205. (mm)    Reported Printing              The margins, or offset, from the upper left corner of    Offset (PO').              the PPS to the upper left corner of the IA reported by              printer driver 203 to GDI 202. (mm)    Resolution (RES)              Number of dots per inch for printer 205. (dpi)    Virtual resolution              Number of dots per inch reported by printer driver 203    (RES')    to GDI 202. (dpi)    Coordinate (X,Y)              A point coordinate for use by printer 205. (mm)    Reported  A point coordinate for the RES' reported by printer    Coordinate (X,Y)'              driver 203 to GDI 202. (mm)    Received Co-              A point coordinate as received by printer driver 203    ordinate (X,Y)"              from GDI 202. (mm)    Distance A(X,Y)              A distance in the (X,Y) direction for use by printer              205. (mm)    Reported distance              A distance in the (X,Y) direction for the RES' reported    A(X,Y)'   by printer driver 203 to GDI 202. (mm)    Received Dis-              A distance in the (X,Y) direction as received by printer    tance A(X,Y)"              driver 203 from GDI 202. (mm)    ______________________________________

In order to perform appropriate scaling, printer driver 203 determinesXSF and YSF from the user input to paper sizes dialog box 210 andscaling options dialog box 220. This is performed, for example, bydividing the width and the height of the paper size selected in papersizes dialog box 220, respectively by the width and the height of thepaper size selected in scaling options dialog box 210. Alternately, TSFmay be directly set out by the user in scaling options dialog box 220.

Once printer driver 203 has determined XSF and YSF, printer driver 203calculates TSF (if not directly set out by the user), ISF and RSF. Thisis done by the equations set out in Table 3 below:

                  TABLE 3    ______________________________________            TSF = min(XSF,YSF)            ISF = floor (TSF) or ceiling (TSF)            RSF = TSF/ISF    ______________________________________

Generally floor (TSF) is used to calculate ISF. Ceiling (TSF) is used tocalculate ISF generally only to avoid overflow problems withapplications that support big paper sizes or to scale down. As will beunderstood from the above equations, the isotropic total scale factor(TSF) is chosen by taking the smallest scale factor (of XSF and YSF) inorder to keep the scaled drawing inside the destination paper and thusavoid clipping objects.

Printer driver 203 uses TSF, ISF and RSF, and the values of PPS, IA, POand RES for printer 205 to generate values for PPS', IA', PO' and RES'which are forwarded from printer driver 203 to GDI 202. The reportedpage size (PPS') is equal to the size of the source paper selected bythe user in paper sizes dialog box 210. Printer driver 203 calculatesIA', PO' and RES' using the equations set out in Table 4 below:

                  TABLE 4    ______________________________________               SF =  PPS/PPS'               IA' = IA/SF               PO' = PO/SF               RES' =                     RES * RSF    ______________________________________

As will be understood from the above equations, the reported imageablearea (IA') is the imageable area (IA) of the destination paper scaleddown by the anisotropic scale factor (SF). When the IA' is scaled up inthe equations below by TSF, which is isotropic, some spare area may beleft in the destination paper. The reported printed offset (PO') is theprinted offset (PO) of the destination paper scaled down by theanisotropic scale factor (SF). The virtual resolution (RES') is theresolution (RES) of printer 205 multiplied by the real scale factor(RSF) to make the application generate more dots and thus biggerobjects.

When printing, printer driver 203 converts coordinates (X,Y)" anddistances A(X,Y)" received from GDI 202 to coordinates (X,Y) anddistances A(X,Y), respectively, for printer output of printer 205 usingthe equations set out in Table 5 below.

                  TABLE 5    ______________________________________    (X,Y)     = (X,Y)" * ISF + (IA - (IA' * TSF))/2              = (X,Y)" * ISF + (IA * ((1,1) - (TSF/SF))/2    A(X,Y)    = A(X,Y)" * ISF    ______________________________________

As will be understood from the above equations, the incoming coordinates(X,Y)" are scaled up by RSF by application 201 and printer driver 203does the remaining scaling by ISF and centers the position in the page.To do this, the extra spare room (when XSF does not equal YSF) is addedto the incoming coordinates (X,Y)" once scaled up. The incomingdistances (or dimensions) A(X,Y)" are also already scaled up by RSF byapplication 201 and printer driver 203 does the remaining scaling byISF.

For example, suppose printer 105 currently has destination paper withthe following constraints, set out in Table 6 below

                  TABLE 6    ______________________________________    Destination Paper = PPS = 1000 × 2000 mm    Margins = PO = (5,10) mm    Destination printable area = IA = 990 × 1980    Resolution = RES = 600 dpi    ______________________________________

If the source paper (PPS') is 100×100 mm, then from the equations setout in Tables 3, 4 and 5, above, printer driver 203 is able to derivethe following information set out in Table 7 below:

                  TABLE 7    ______________________________________    SF         = PPS/PPS' = (10,20)    TSF        = min(XSF,YSF) = min(10,20) = 10    ISF        = 10    RSF        = 1    IA'        = IA/SF = 99 × 99 mm    PO'        = PO/SF = (0.5, 0.5) mm    RES'       = RES * RSF = 600 dpi × 1 = 600 dpi    ______________________________________

When printing, printer driver 203 converts coordinates (X,Y)" anddistances A(X,Y)" received from GDI 202 to coordinates (X,Y) anddistances A(X,Y) and distances, respectively, for printer output ofprinter 205 using the equations set out in Table 8 below.

                  TABLE 8    ______________________________________    (X,Y)    = (X,Y)" * ISF + IA * ((1,1) - (TSF/SF))/2             = (X,Y)" * 10 + (990,1980) * ((1,1) - (1,.05))/2             = (X,Y)" * 10 + (990,1980) * (0, 0.25)             = (X,Y)" * 10 + (0,495)    A(X,Y)   = A(X,Y)" * ISF             = A(X,Y)" * 10    ______________________________________

Thus when printer driver 203 receives instructions to draw a rectanglewith the given corner coordinates of (0,0), (0,99), (99,0) and (99,99),printer driver 203 translates these using the appropriate equation inTable 5 to the coordinates of (0,495), (0,1485), (990,495) and(990,1485).

FIG. 9 shows a layout property page 240, generated by printer driver203. An area 241 represents the physical page that will be printed outby printer 205. An area 242 represents the printable area on that page.Herein, printable area is also referred to as imageable area.

FIG. 9 also shows a box 243 which can be selected to enable a specialprint preview implemented by printer driver 203. While some applicationsprovide a print preview capability, a print preview feature isparticularly important for large format printers because the cost ofprint media and ink can be significant, and reprinting can be costlyboth in the cost of print media and ink as well as in time spentprinting. For this reason, a print preview is implemented by printerdriver 203 as follows.

Printer driver 203 requests GDI 202 to replay twice all the calls in theprint job. In the first pass, printer driver 203 performs a whole pagescan and redirects all the requests to a display which show a user whatis going to be actually printed. If the user decides to go ahead, thedriver will process again, in the second pass, all the calls to generatethe output sent to printer 205.

When print preview is implemented, printer driver 203 reports to GDI 202the need for banding support. This results in the operating system(e.g., Microsoft Windows operating system) storing all calls to printerdriver 203 in a file (called a metafile), so that each band of the pageindicated by printer driver 203 may be replayed as many times as needed.

In the preferred embodiment, printer driver 203 scans the page to showthe preview. This is done by printer driver 203 reporting to GDI 202 aband as big as the whole page. GDI 202 then sends to printer driver 203all the calls for the print job. Printer driver 203 answers all thecalls that ask for information as if no print preview was enabled, butprinter driver 203 changes its behavior for calls that lead to printsomething on the page. Instead of generating output for printer 205(e.g., in HP-GL/2 or HP RTL format), printer driver 203 paints the callsinto a "print progress" window shown on monitor 206. The dimensions andcoordinates on the physical page are scaled down to the dimensions andcoordinates of the window on the screen by defining the appropriatemapping between them. This is performed by printer driver 203.

In order to paint the wireframe of the drawing, printer driver 203ignores any color, pattern fill, pen width or styled pen. Only theraster operation (ROP) will be kept. The different objects in thedrawings are painted as follows by printer driver 203. Pixels arepainted as pixels. For polygons and rectangles, just the outline ispainted by printer driver 203. Polylines are painted by printer driver203 as lines. For scanlines, printer driver 203 paints only the firstand the last pixels of every segment in the scan lines. Printer driver203 paints bitmaps and text as solid black rectangles which outline therepresented bitmaps or text.

The page is printed on a printer by printer driver 203 as follows. In anobject mode, printer driver 203 again reports to GDI 202 a band as bigas the whole page. Alternatively, printer driver 203 can also use a"sleek" mode. In sleek mode, the output is drawn up into a series ofbands. This allows printer driver 203 to use significantly less memorywhen performing the print. However, using sleek mode the printing can besignificantly slower. When in sleek mode, printer driver 203 will reportas many bands as necessary.

Printer driver 203 will then process all the calls in the regular way togenerate output for printer 203. When the page has been printed, printerdriver 203 reports to GDI 202 that the band is empty and moves forwardto another page or terminates the print job.

In the preferred embodiment, when the print preview is enabled, awireframe version of the job that is being printed is gradually drawn inthe preview window of display 206. The user can wait to see the previewof each page and then validate the output to continue printing onprinter 205. Alternatively, the user can skip the preview process forthe current page being previewed and the rest of the pages for the joband begin printing right away on printer 205. Alternatively, the usercan cancel the printing job at any time.

FIG. 10 shows a dialog box 245, originated by printer driver 203 anddisplayed on display 206, when called up by a user in accordance with analternate preferred embodiment of the present invention. In a section246 of dialog box 246, a paper size and source is selected by a user. Ina section 245 of dialog box 245 zoom settings are selected.

FIGS. 11 through 15 illustrate the user interface window presented byprinter driver 203 on monitor 204 to a user when printing is performed.In FIG. 11, print preview is disabled. Within a print progress window250 (print progress window 250 is a user interface dialog box), a printpreview area 251 represents the physical page that will be printed outby printer 205. Print progress window is a user interface dialog box.Within preview area 251 is shown a shaded area which represents theprintable area on a page. An icon 253 and text 252 indicate thatprinting is occurring. A user can cancel printing by selecting "Cancel"button 254.

In FIG. 12, print preview is disabled and sleek mode is selected. Withina print progress window 260, a print preview area 261 represents thephysical page that will be printed out by printer 205. Within previewarea 261 is shown a shaded area which represents the printable area on apage. An icon 263 and text 262 indicate that printing is occurring. Auser can cancel printing by selecting "Cancel" button 264. A box 265shows the percent of the print job which has been performed. A warningbox 266 indicates to a user that a sleek mode is being used.

In FIG. 13, print preview is enabled. Within a print progress window270, a print preview area 271 shows the drawing as it is previewed. Anicon 273 and text 272 indicate that print preview is occurring. A usercan cancel printing by selecting "Cancel" button 274 or skip preview byselecting a "Skip Preview" button 275.

In FIG. 14, print preview of the page is completed and the program waitsa period of time, e.g., 60 seconds, for a user to indicate whether thepage should be printed. If the user makes no indication during the waitperiod, after the expiration of the wait period, the page is printed.During the wait period, within a print progress window 280, a printpreview area 281 shows the complete preview of the drawing. An icon 283and text 282 indicate that the printer is waiting for a response fromthe user. A user can cancel printing by selecting "Cancel" button 284 orstart printing by selecting a print page button 285.

In FIG. 15, printing is occurring. Within a print progress window 290, aprint preview area 291 shows the preview of the drawing. An icon 293 andtext 292 indicate that printing is occurring. A user can cancel printingby selecting "Cancel" button 294. Preview of future pages, if theyexist, can be skipped by selecting "Skip Preview" button 295.

FIG. 16 illustrates the distinctions between page size, margin, plottingarea and inked area. Within media 305, a page size 301 is defined to bethe amount of paper the print (or plot) will consume. Margins 302 arespecific to the printer (or plotter). In a typical example, mechanicalmargins (hard-clip limits) for sheet media are 5 mm+/-2 mm on both sidesand approximately 17 mm on the front and rear edges. These margins, withtolerances, may be subtracted from any supported media size to determineactual plotting area.

Printable (or plotting) area 303 is the page size minus the margins(also known as page hardclip). Inked area 304 is the smallest rectanglethat contains all the print (plot) data.

In the preferred embodiment, GDI 202, shown in FIG. 5, makes calls toprinter driver 203 for printing. These calls are device driver interface(DDI) calls, text DDI calls, pixel DDI calls or vector DDI calls. Duringprint preview, printer driver 203 translates each of these DDI calls toa GDI call and returns the translated GDI call to GDI 202. GDI 202 thenforwards the GDI call translated to a DDI call to driver 204 for displayon monitor 206.

Table 9 below shows typical translations made by printer driver 203 toshow a wireframe of the drawing.

                  TABLE 9    ______________________________________    DDI call received by printer driver 203                        GDI calls sent to GDI 202    ______________________________________    Raster Calls    BitBlt              Rectangle    StretchBlt          Rectangle    SetDlBitsToDevice   Rectangle    StretchDIBits       Rectangle    Text Calls    ExtTextOut          Rectangle    Pixel Calls    Pixel               SetPixel    Vector Calls    OS.sub.-- SCANLINES SetPixel(first.sub.-- pixel)       (cont)              SetPixel(last.sub.-- pixel)    OS.sub.-- RECTANGLE MoveTo(point 0)       (cont)              LineTo(point 1)       (cont)              LineTo(point 2)       (cont)              LineTo(point 3)       (cont)              LineTo(point 0)    OS.sub.-- ALTPOLYGON                        MoveTo(point 0)       (cont)              LineTo(point 1)        ...                ...       (cont)              LineTo(point N)    OS.sub.-- WINDPOLYGON                        MoveTo(point 0)       (cont)              LineTo(point 1)        ...                ...       (cont)              LineTo(point N)    OS.sub.-- POLYLINE  MoveTo(point 0)       (cont)              LineTo(point 1)        ...                ...       (cont)              LineTo(point N)    ______________________________________

The foregoing discussion discloses and describes merely exemplarymethods and embodiments of the present invention. As will be understoodby those familiar with the art, the invention may be embodied in otherspecific forms without departing from the spirit or essentialcharacteristics thereof. Accordingly, the disclosure of the presentinvention is intended to be illustrative, but not limiting, of the scopeof the invention, which is set forth in the following claims.

We claim:
 1. A method for providing a print preview of a print job,comprising the following steps:(a) forwarding, by an operating system toa printer driver, printing calls for the print job, wherein the printerdriver is within a host computer, the host computer being separate froma printer which is a destination of the print job; (b) translating, bythe printer driver, the printing calls to display calls for the printjob; (c) forwarding, by the printer driver through the operating systemto a display driver, the display calls; and, (d) displaying by thedisplay driver on a display, a representation of the print job.
 2. Amethod as in claim 1 wherein step (b) includes generating display callswhich generate a simplified representation of the print job to bedisplayed in step (d).
 3. A method as in claim 2 wherein in generatingthe simplified representation, the printer driver ignores any color,pattern fill, pen width and styled pen for the print job.
 4. A method asin claim 2 wherein in generating the simplified representation, theprinter driver paints just the outline of polygons and rectangles, andthe printer driver paints bitmaps and text as solid black rectangles. 5.A method as in claim 4 wherein in generating the simplifiedrepresentation, the printer driver paints polylines as lines, and theprinter driver paints only first and last pixels of every segment inscan lines.
 6. A method as in claim 1 additionally comprising thefollowing step:(e) in response to a user selecting a "skip preview"button on a print progress window, printing the print job on a printer.7. A method as in claim 6 wherein step (e) includes the followingsubstep:(e.1) when during the predetermined amount of time, user inputis received directing the print job to be canceled, canceling the printjob.
 8. A method as in claim 1 additionally comprising the followingsteps:(e) after displaying a page of the print job on the display,waiting a predetermined amount of time for user input, before printingthe page of the print job; and, (f) when the predetermined amount oftime expires before user input is received, printing the page of theprint job.
 9. A method as in claim 8 wherein step (e) includes thefollowing substep:(e.1) when during the predetermined amount of time,user input is received directing the print job to be canceled, cancelingthe print job.
 10. A method as in claim 1 additionally comprising thefollowing steps:(e) again forwarding, by the operating system to theprinter driver, the printing calls for the print job; and, (b) printingby the printer driver on a printer, the print job.
 11. Storage mediawhich stores software which performs a method for providing a printpreview of a print job, comprising the following steps:(a) forwarding,by an operating system to a printer driver, printing calls for the printjob, wherein the printer driver is within a host computer, the hostcomputer being separate from a printer which is a destination of theprint job; (b) translating, by the printer driver, the printing calls todisplay calls for the print job; (c) forwarding, by the printer driverthrough the operating system to a display driver, the display calls;and, (d) displaying by the display driver on a display, a representationof the print job.
 12. Storage media as in claim 11 wherein step (b)includes generating display calls which generate a simplifiedrepresentation of the print job to be displayed in step (d).
 13. Storagemedia as in claim 12 wherein in generating the simplifiedrepresentation, the printer driver ignores any color, pattern fill, penwidth and styled pen for the print job.
 14. Storage media as in claim 12wherein in generating the simplified representation, the printer driverpaints just the outline of polygons and rectangles, and the printerdriver paints bitmaps and text as rectangles which outline the bitmapsand the text, respectively.
 15. Storage media as in claim 14 wherein ingenerating the simplified representation, the printer driver paintspolylines as lines, and the printer driver paints only first and lastpixels of every segment in scan lines.
 16. Storage media as in claim 11wherein the method additionally comprises the following step:(e) inresponse to a user selecting a "skip preview" button on a print progresswindow, printing the print job on a printer.
 17. Storage media as inclaim 11 wherein the method additionally comprises the followingsteps:(e) after displaying a page of the print job on the display,waiting a predetermined amount of time for user input, before printingthe page of the print job; and, (f) when the predetermined amount oftime expires before user input is received, printing the page of theprint job.
 18. Storage media as in claim 17 wherein step (e) includesthe following substep:(e.9) when during the predetermined amount oftime, user input is received directing the print job to be canceled,canceling the print job.
 19. Storage media as in claim 11 wherein themethod additionally comprises the following steps:(e) again forwarding,by the operating system to the printer driver, the printing calls forthe print job; and, (b) printing by the display driver on a printer, theprint job.
 20. A computer system comprising:an operating system; adisplay; a display driver, coupled to the display, for controlling thedisplay; and, a printer driver for driving a printer, wherein theprinter driver is within a host computer, the host computer beingseparate from the printer, the printer driver comprising:receiving meansfor receiving from the operating system, printing calls for a print job,translating means for translating the printing calls to display callsfor the print job, and forwarding means for forwarding, through theoperating system to the display driver, the display calls; wherein inresponse to receiving the display calls, the display driver displays arepresentation of the print job on the display.
 21. A computer system asin claim 20 wherein the translating means generates display calls whichgenerate a simplified representation of the print job to be displayed bythe display.
 22. A computer system as in claim 21 wherein when thetranslating means generates display calls for the simplifiedrepresentation, the translating means ignores any color, pattern fill,pen width and styled pen for the print job.
 23. A computer system as inclaim 21 wherein when the translating means generates display calls forthe simplified representation, the translating means paints just theoutline of polygons and rectangles, and the translating means paintsbitmaps and text as solid rectangles.
 24. A computer system as in claim23 wherein when the translating means generates display calls for thesimplified representation, the translating means paints polylines aslines, and the translating means paints only first and last pixels ofevery segment in scan lines.
 25. A computer system as in 20 wherein theprinter driver additionally comprises:print means for, in response to auser selecting a "skip preview" button on a print progress window,printing the print job on a printer.
 26. A computer system as in claim20 wherein after displaying a page of the print job on the display, theprinter driver waits a predetermined amount of time for user input,before printing the page of the print job, and wherein when thepredetermined amount of time expires before user input is received, theprinter driver prints the page of the print job.
 27. A computer systemas in claim 26 wherein the printer driver includes means for cancelingthe print job when user input is received directing the print job to becanceled.